using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using OpenMVCRM.Entities;

namespace OpenMVCRM.DataAccess
{
    public interface IRepositary : IDisposable
    {
        IEnumerable<Industry> GetAllIndustries();
        IEnumerable<Client> GetClientsForOrganization(int organizationID);

        IEnumerable<Client> GetClients();
        Client GetClientById(int id);

        OperationStatus SaveClient(Client client);


        OperationStatus UpdateClient(Client client);
        OperationStatus DeleteClient(int clientId);



        Address GetAddress(int id);

        User GetUserByEmailAddress(string emailAddress);
        OperationStatus SaveAddress(Address address);
        OperationStatus DeleteAddress(int addressId);

        OperationStatus InsertCountry(Country country);
        OperationStatus InsertState(State state);

        IEnumerable<Country> GetCountries();
        IEnumerable<State> GetStates(int countryId);

        OperationStatus InsertUser(User user);


        OperationStatus SavePhoneNumber(PhoneNumber phoneNumber);


        #region Contact Person

        ContactPerson GetContactPersonFromID(int id);
        OperationStatus InsertContactPerson(ContactPerson contactPerson);
        OperationStatus UpdateContactPerson(ContactPerson contactPerson);
        IList<ContactPerson> GetContactPersons(int organizationId);

        #endregion Contact Person




    }
}
